% !TEX root = ../latex-faq-cn.tex

\section{用法惯例}


\faq{TeX编辑器中的魔法注释}{}

在TeX中有单行注释命令为\%，其后的文本主要是对源代码进行一些说明，它们会被TeX，LaTeX等排版引擎所忽略。但有些
注释对专门的TeX相关编辑器来说，可能用特别的意义。在不同的TeX编辑器中，这魔法注释(magic comments）可能是不同
的。 下面是一些例子：
\begin{itemize}
  \item 指定\TeX{}编译器
  \begin{texlist}
  TeXStudio，TeXworks, Sublime Text
  % !TeX program = xelatex
  
  TeXShop
  %！TEX TS-program = xelatex
  \end{texlist}

  同理，将 xelatex 变为 pdflatex，就可以强制调用 pdfLaTeX 编译器。在代码中需要使
  用ifxetex宏包进行条件判断。

  \item 指定文档为 |UTF-8| 编码
  \begin{texlist}
  TeXworks，TeXStudio, Sublime Text
  % !TeX encoding = utf8
  
  Winedt
  % !Mode:: "TeX:UTF-8"
  or
  % -*- coding: utf-8 -*-
  
  TeXShop
  %!TEX encoding = UTF-8 Unicode
  \end{texlist}
  由于Winedt对编码自动识别能力较弱，使用此注释比较必要，不然要手动设置。
  \item 指定主文档
  \begin{texlist}
  TeXStudio, Sublime Text
  % !TeX root = filename
  \end{texlist}
  若需要指定上一层次的文件，则应该使用以下命令
  \begin{texlist}
  TeXStudio, Sublime Text
  % !TeX root = ../main.tex
  \end{texlist}
  用两点表示返回上一层次，如果还需要再返回一个层次，则需要
  \begin{texlist}
  TeXStudio, Sublime Text
  % !TeX root = ../../main.tex
  \end{texlist}
  \item 指定bib处理程序
  \begin{texlist}
  TeXStudio
  % !TeX TXS-program:bibliography = txs:///biber
  \end{texlist}
  源文件添加如上代码即可用biber处理bib文件。将biber改为bibtex，即可指定\BibTeX{}处理bib文件。
  \item 
  为\TeX{}编译器指定参数
  \begin{texlist}
  TeXStudio
  % !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
  
  sublime text - latextools
  %!TEX options = --shell-escape
  
  texshop
  -shell-escape
  \end{texlist}
  有时在使用某些宏包时我们需要额外调用一些编译参数，例如 minted 宏包需要使用 --shell-escape，这时可用以上魔法注释实现该功能
\end{itemize}

各种编辑器对魔法注释的支持情况见表~\ref{magiccommands}
\begin{table}
  \centering
  \caption{各种编辑器对魔法注释的支持情况。x表示支持；o表示不支持；?表示不确定}\label{magiccommands}
  \begin{tabular}{|l|*{4}{c|}}
    \hline
    & Encoding & Program & Root & Spellcheck \\
    \hline
    TeXShop & x  & x & x & x \\
    \hline
    TeXStudio & x & x & x & x \\
    \hline
    TextMate & ? & x & x & ? \\
    \hline
    TeXworks & x & x & x & x \\
    \hline
    SublimeText  & x & x & x & x \\ 
    \hline
    VSCode & x & x & ? & ? \\
    \hline
    Atom & o & x & x & o \\
    \hline
    Vim
    (vimtex) & o & x & x & o \\ 
    \hline
    Texpad & o & o & ? & ? \\
    \hline
  \end{tabular}
\end{table}

\section{其它}

\faq{LaTeX与数学软件(Mathematica, Maple,Sagemath等)}{}


\faq{LaTeX与公式编辑器}{}

公式编辑器MathType设置下就可以输入TeX指令得到公式，也可以复制公式得到TeX指令，但是得到的指令是所谓的机器代
码，可读性实在不敢恭维。

\faq{MathJax}{}
MathJax是一个JavaScript引擎，用来显示网络上的数学公式。它支持LaTeX、MathML、AsciiMath符号。查阅MathJax支
持的LaTeX命令请参考 \url{http://onemathematicalcat.org/MathJaxDocumentation/TeXSyntax.htm}

\faq{如何查询代码中的不可见字符}{invisible-char}
可以试试把代码放入网站 \url{https://www.soscisurvey.de/tools/view-chars.php} 或 \url{https://r12a.github.io/app-conversion} 查看是否存在一些不可见的字符。
